Provider Connection Framework

ABSTRACT

A library of routines may serve as a connection point between multiple services. Each service may be a consumer or provider of data, and may be connected through the library using a registry service. The library may include a provider access mechanism through which provider services may transmit availability of an interface, as well as a consumer access mechanism through which an interface to be consumed may be transmitted. A registry service may match providers with consumers and facilitate communication between the two. The library may be configured to allow providers and consumers to be added or removed at any time.

BACKGROUND

Devices and services that interact with each other often havedependencies, where one service may depend on another service for aninput. In many cases, such services may be started in a specificsequence so that the dependencies may be satisfied. Once the servicesare operating, adding or removing services may be difficult to performwithout restarting the entire system.

SUMMARY

A library of routines may serve as a connection point between multipleservices. Each service may be a consumer or provider of data, and may beconnected through the library using a registry service. The library mayinclude a provider access mechanism through which provider services maytransmit availability of an interface, as well as a consumer accessmechanism through which an interface to be consumed may be transmitted.A registry service may match providers with consumers and facilitatecommunication between the two. The library may be configured to allowproviders and consumers to be added or removed at any time.

This Summary is provided to introduce a selection of concepts in asimplified form that are further described below in the DetailedDescription. This Summary is not intended to identify key features oressential features of the claimed subject matter, nor is it intended tobe used to limit the scope of the claimed subject matter.

BRIEF DESCRIPTION OF THE DRAWINGS

In the drawings,

FIG. 1 is a diagram illustration of an embodiment showing a system witha registry based matching system for consumer and provider processes.

FIG. 2 is a timeline illustration of an embodiment showing a method formatching and interacting between consumer and provider processes.

FIG. 3 is a timeline illustration of an embodiment showing a method forreestablishing communications after a failure.

DETAILED DESCRIPTION

A library of routines may facilitate communications between providerprocesses and consumer processes using a registry service. Each consumerprocess may link to a consumer library that may establish connections tothe registry service and request certain interfaces. Similarly, eachprovider process may link to a provider library that may establishconnections to the registry service and make certain interfacesavailable. The registry service may match provider processes withconsumer processes and transmit communication information to therespective provider library and consumer library, which may establish athird communication path and bind objects from the consumer process tocorresponding objects in the provider process.

The library may handle all communications between provider processes andconsumer processes, including establishing connections to the registryservice as well as direct communications between the matched providerand consumer processes.

By using the library and registry service, provider and consumerprocesses may be brought online in a random sequence, and may be addedor removed once communications are established. The library and registryservice may allow complex systems, such as network applications, to bestarted and managed without complex sequencing during startup, and mayallow network services to be added or removed as the network applicationis operating.

The library may allow programs to be written in an object oriented formand linked together through the registry service. In some embodiments,the provider and consumer processes, as well as the registry service,may all operate on different hardware platforms and may be connectedthrough a network. In other embodiments, the provider and consumerprocesses and the registry service may reside on a single device. Eachprogram may identify objects that it may consume as well as objects thatit may provide, and such objects may be defined by an interface.

An interface may be a contract or definition of the classes, objects,methods, or other components that may be provided through an interface.A consumer process may request one or more components that conform tothe interface, and a binding may be established between the requestedobject and the provider process. The provider process may provide theobject that may be consumed by the consumer process when the consumerprocess calls the object.

Throughout this specification, like reference numbers signify the sameelements throughout the description of the figures.

When elements are referred to as being “connected” or “coupled,” theelements can be directly connected or coupled together or one or moreintervening elements may also be present. In contrast, when elements arereferred to as being “directly connected” or “directly coupled,” thereare no intervening elements present.

The subject matter may be embodied as devices, systems, methods, and/orcomputer program products. Accordingly, some or all of the subjectmatter may be embodied in hardware and/or in software (includingfirmware, resident software, micro-code, state machines, gate arrays,etc.) Furthermore, the subject matter may take the form of a computerprogram product on a computer-usable or computer-readable storage mediumhaving computer-usable or computer-readable program code embodied in themedium for use by or in connection with an instruction execution system.In the context of this document, a computer-usable or computer-readablemedium may be any medium that can contain, store, communicate,propagate, or transport the program for use by or in connection with theinstruction execution system, apparatus, or device.

The computer-usable or computer-readable medium may be for example, butnot limited to, an electronic, magnetic, optical, electromagnetic,infrared, or semiconductor system, apparatus, device, or propagationmedium. By way of example, and not limitation, computer-readable mediamay comprise computer storage media and communication media.

Computer storage media includes volatile and nonvolatile, removable andnon-removable media implemented in any method or technology for storageof information such as computer-readable instructions, data structures,program modules, or other data. Computer storage media includes, but isnot limited to, RAM, ROM, EEPROM, flash memory or other memorytechnology, CD-ROM, digital versatile disks (DVD) or other opticalstorage, magnetic cassettes, magnetic tape, magnetic disk storage orother magnetic storage devices, or any other medium which can be used tostore the desired information and may be accessed by an instructionexecution system. Note that the computer-usable or computer-readablemedium can be paper or other suitable medium upon which the program isprinted, as the program can be electronically captured via, forinstance, optical scanning of the paper or other suitable medium, thencompiled, interpreted, of otherwise processed in a suitable manner, ifnecessary, and then stored in a computer memory.

Communication media typically embodies computer-readable instructions,data structures, program modules or other data in a modulated datasignal such as a carrier wave or other transport mechanism and includesany information delivery media. The term “modulated data signal” can bedefined as a signal that has one or more of its characteristics set orchanged in such a manner as to encode information in the signal. By wayof example, and not limitation, communication media includes wired mediasuch as a wired network or direct-wired connection, and wireless mediasuch as acoustic, RF, infrared and other wireless media. Combinations ofany of the above-mentioned should also be included within the scope ofcomputer-readable media.

When the subject matter is embodied in the general context ofcomputer-executable instructions, the embodiment may comprise programmodules, executed by one or more systems, computers, or other devices.Generally, program modules include routines, programs, objects,components, data structures, and the like, that perform particular tasksor implement particular abstract data types. Typically, thefunctionality of the program modules may be combined or distributed asdesired in various embodiments.

FIG. 1 is a diagram of an embodiment 100, showing a system with providerand consumer communication facilitated by a library. Embodiment 100 is asimplified example of a device in which provider and consumer processesmay be bound together using a registry service, where each of theprocesses may link to a library of routines that facilitate thecommunication and binding.

The diagram of FIG. 1 illustrates functional components of a system. Insome cases, the component may be a hardware component, a softwarecomponent, or a combination of hardware and software. Some of thecomponents may be application level software, while other components maybe operating system level components. In some cases, the connection ofone component to another may be a close connection where two or morecomponents are operating on a single hardware platform. In other cases,the connections may be made over network connections spanning longdistances. Each embodiment may use different hardware, software, andinterconnection architectures to achieve the described functions.

Embodiment 100 illustrates a hardware platform and network environmentin which provider processes and consumer processes may be matched andbound together using a library. The respective processes may link to thelibrary and the library may handle the various communications andbinding.

The library may enable a programming architecture where processes merelydefine their dependencies using interfaces and objects conforming to theinterfaces. Processes that may provide object may make those objectsknown according to the interfaces. Once the associations with theinterfaces are defined, the library in association with the registryservice may handle all of the communications, handshaking, matching, andother activities.

By using the library, a programmer may create an application or processthat may handle objects relating to an interface and the library mayperform much of the complexities of orchestrating the processestogether. In many large scale applications, applications or services maydepend on other applications and services. In order to develop and testsuch large scale applications, individual processes may be created andtested against an interface during development. During integrationtesting, the processes may be combined using the library to operate as alarge scale application.

The library and registry service may be used to combine processes withina single device, such as device 102. In such an embodiment, the variousprocesses may advertise the interfaces for which the process may provideor consume, and those processes may be bound together using the library.In another embodiment, the library may be used to join processes orapplications operating on different devices.

The library and registry service may allow changes to be made to asystem while the system is in operation. For example, a consumer processmay be halted and replaced with a new consumer process. Similarly, aprovider process may be halted and restarted without causing a consumerprocess to crash. In another example, a new consumer process may beadded to the system and establish relationships with one or moreprovider processes.

The device 102 may represent a typical computer device, such as adesktop computer or server, having hardware components 104 and softwarecomponents 106. In some embodiments, the device 102 may be a laptopcomputer, netbook computer, tablet computer, mobile telephone, handheldpersonal digital assistant, game console, network appliance, or anyother computing device.

The architecture illustrated for device 102 may represent a typicalarchitecture with hardware and software components; however, otherarchitectures may be used to implement some or all of the distributeddatabase system.

The hardware components 104 may include a processor 108, random accessmemory 110, and nonvolatile storage 112. The hardware components 104 mayalso include a network interface 114 and a user interface 116.

The software components 106 may include an operating system 118 on whichvarious applications may execute, including a provider process 120 andconsumer process 122. The provider process 120 may provide objectsaccording to an interface, and the consumer process 122 may consume theobjects.

For the purposes of this specification and claims, an interface mayrefer to a set of named operations that may be invoked by a consumerprocess. An interface may refer to an abstraction that a providerprocess may provide of itself to other processes. An interface mayseparate the method of external communication from internal operation.The external communication may refer to communication with otherprocesses while internal operation may refer to the internal mechanismfor performing any action.

An interface may be considered a contract that defines how a consumerprocess may interact with a provider process. When the interface is welldefined, different provider processes may be interchanged and stillprovide objects for a consumer process.

In used with an object oriented language, the interface may define anabstract type that contains no data but may expose behaviors as methods.A class having all of the method corresponding to an interface may besaid to implement the interface.

The libraries 124 and 126 may be linked to the provider process 120 andconsumer process 122, respectively. The linking may be performed atcompile time by a compiler or at runtime by a runtime linker. In manyembodiments, the libraries 124 and 126 may be dynamic linked librariesor shared libraries.

A registry 128 may be a service that manages the various provider andconsumer processes. The registry may receive communications fromprovider processes and consumer processes that advertise an interfaceand match one or more provider processes with one or more consumerprocesses for each given interface.

In some cases, a provider service may advertise an interface for which aconsumer process may not be available. Similarly, a consumer process mayadvertise an interface for which a provider process may not beavailable. During the period of time that a process does not have amatch, the process may operate normally. During such time, the processmay be idle or may be performing other actions.

In some cases, the registry 128 may not be functioning or may not beavailable when one of the provider process 120 or consumer process 122is operational. During such time, the respective libraries 124 and 126may perform repeated retries to attempt to connect to the registry 128.For example, the library 124 may attempt to locate the registry 128using a Uniform Resource Identifier (URI) or other address mechanism. Ifthe communication is not established, the library 124 may perform aretry of the same URI. In some embodiments, the library 124 may attemptto connect using a second method or second address.

When a corresponding provider and consumer process may be identified bythe registry 128, the registry 128 may transmit communications to therespective libraries 124 and 126 so that the libraries may establishcommunication between themselves.

The libraries 124 and 126 may establish direct communication betweenthemselves when implementing an interface. The libraries may receivecommunication information from the registry 128 that may identify anaddress for the corresponding library as well as additional informationthat may be used to create a connection. The additional information mayinclude protocols, addresses, proxies, port designators, and otherinformation.

In some embodiments, each process may present authentication credentialswhen establishing a connection with a registry. The authenticationcredentials may define a set of user credentials, device credentials,process credentials, or other identifiers. The authenticationcredentials may be used by the registry to match a provider process witha consumer process based on access policies established for eachprocess.

For example, a consumer process may be permitted access to only certainprovider processes based on the specific user, device, process, or otheridentifiers. A registry may match such a consumer process with aprovider process for which the consumer process may be permitted access.

In some embodiments, a policy may define which types of consumerprocesses may receive data from a specific provider. For example, aprovider process may have sensitive information that may be consumed byprocesses that may be associated with a certain class of users.

The policy may be defined by each process separately and provided to theregistry for matching. For example, a provider process may transmitinformation to the registry that includes an interface as well as apolicy to be applied to the interface. The policy may define, forexample, which users, devices, or processes may have access to theinterface and what types of credentials may be accepted. The registrymay match the provider's interface with that of a consumer process thatsupplies proper credentials.

A process may be both a provider and consumer in some instances. In somesuch instances, the process may both provide and consume the sameinterface. Such instances may be useful when other consumer processesmay be available to consume the objects provided by the provider portionof the process.

The libraries 124 and 126 may be identical in some embodiments. In suchembodiments, the libraries 124 and 126 may allow either the providerprocess 120 or the consumer process 122 to act as either providers orconsumers. In other embodiments, separate libraries may be created forprovider processes and consumer processes.

In some embodiments, the registry 128 may have a library 130 that maycommunicate with the libraries 124 and 126. The library 130 may be acopy of the libraries 124 and 126 in some embodiments, or may be adifferent version of the library specific for a registry service. Insome embodiments, the functions of the library 130 may be integratedwith the registry 128.

The components of device 102 may represent an embodiment where theprovider and consumer processes, as well as the registry, are locatedwithin the same device. Such an embodiment may be useful in anapplication where several independent processes may work together toform an application.

In other embodiments, the same concepts and mechanisms may apply toapplications that may be distributed across a network 132. For example,a device 134 may contain a hardware platform 136 and may operate aconsumer process 138 with a linked library 140. Device 142 may also havea hardware platform 144 on which a provider process 146 may executealong with a library 148. A third device 150 may have another hardwareplatform 152 on which a registry 154 with a library 156 may execute.

The hardware platforms 136, 144, and 152 may contain similar hardwarecomponents as the hardware components 104 for device 102. The network132 may represent a local area network or a wide area network, such asthe Internet. In some cases, the network 132 may be a tightly coupled orrestricted access network, such as a storage area network or otherarchitecture.

The devices 134, 142, and 154 may represent an embodiment where each ofthe consumer and provider processes, as well as the registry, may belocated on different hardware platforms. In such an embodiment, eachdevice may operate as a provider or consumer and may advertise to theregistry, then receive communication information to enable the librariesto communicate and bind objects based on the interface.

In some such embodiments, many different consumer and provider devicesmay be joined together to form a large scale application or groups ofapplications.

One example of such an embodiment may be in the management systems of alocal area network. A first device may provide email and messagingservices and may be interdependent on another device that may provideauthentication and management services. In such an embodiment, the emailand messaging device may advertise that it may consume authenticationservices through an authentication interface and may provide emailservices through an email interface. The second device may advertisethat it may consume portions of an email interface and may provide theauthentication interface. As the two devices come online, the variousservices may make their advertisements known to the registry 154, whichmay match the interfaces together and enable the services to communicatewith each other.

In some embodiments, a registry may use an authentication mechanism 158and policies from a policy server 160 to permit consumers and providersto communicate. In some such embodiments, the consumers and providersmay provide credentials that may be verified by an authenticationmechanism 158 at the time the processes advertise with the registry.

In some embodiments, an authentication mechanism 158 may be used when aconsumer and provider process are being connected and bound. During sucha process, the consumer and provider may mutually authenticate eachother using credentials provided by the registry.

In one such embodiment, a Globally Unique Identifier (GUID) or other keymay be passed from the registry to the consumer and provider. When theconsumer and provider establish communications, the key may be exchangedto authenticate each process to the other.

In another such embodiment, the consumer and provider may eachseparately authenticate against an authentication mechanism and receivea token as part of establishing a communication session. The tokens maybe exchanged and each process may verify the token received from theother.

In still another such embodiment, the registry may provide encryptionkeys to the consumer and provider as part of the communicationinformation. The encryption keys may be used to encrypt or decryptinformation passed from one library to another and thereby authenticateeach other.

A set of policies defined in a policy server 160 may be enforced betweena consumer and provider. The policies may define access privileges forconsumer or provider processes based on the user, device, process, orother parameters. A policy may be defined that gives access to specificusers or groups of users, for example. Such a policy may permit or denyaccess for a process associated with a user, and may be applied toeither or both of the consumer or provider process. Similarly, policiesmay be defined that permits or denies access to specific devices ortypes of devices, or for specific processes or types of processes.

FIG. 2 is a timeline illustration of an embodiment 200 showing theactions and interactions of a consumer process 204, a library 206associated with the consumer process 204, a registry 208, a providerprocess 212, and a library 210 associated with the provider process 212.Embodiment 200 may illustrate some of the actions performed by thecomponents as described in embodiment 100.

Other embodiments may use different sequencing, additional or fewersteps, and different nomenclature or terminology to accomplish similarfunctions. In some embodiments, various operations or set of operationsmay be performed in parallel with other operations, either in asynchronous or asynchronous manner. The steps selected here were chosento illustrate some principles of operations in a simplified form.

Embodiment 200 may illustrate the actions and interactions betweenlibraries 206 and 210 in combination with a registry 208 to provideconnectivity and binding between a consumer process 204 and providerprocess 212. In some embodiments, all of the components may reside on asingle device and operate on a single processor, such components beingthe consumer process 204, consumer library 206, registry 208, providerlibrary 210, and provider process 212. In other embodiments, one or moreof the components may be located on a remote device.

The consumer process 204 may be any process that may consume an objectdefined in an interface. The consumer process 204 may be any type ofapplication, process, thread, or other executable component. Similarly,the provider process 212 may be any process that may implement aninterface and provide objects defined in the interface. The providerprocess 212 may also be any type of application, process, thread, orother executable component.

The consumer library 206 and provider library 210 may be libraries thatare callable by the respective consumer process 204 and provider process212. The libraries may be linked to the processes at compile time orruntime and may be implemented as shared libraries or dynamic linkedlibraries. In such embodiments, the libraries may execute on the samedevice as the respective processes.

The registry 208 may perform matchmaking between the consumer process204 and provider process 212. The matchmaking process may identify aprovider process that implements an interface with a consumer processthat requests the interface.

The matchmaking process may also consider various policies whendetermining a match. In some cases, a process may have accessrestrictions that may permit or deny access to other processes based onthe process's associated properties, such as a user, device, or otherprocess.

The consumer process 204 may start in block 214.

During execution, the consumer process 204 may instantiate an objectwithin an interface. The instantiation may refer to the consumer library206 as a source for the object, and the consumer library 206 may receivethe interface and object in block 218.

The consumer library 206 may gather authentication credentials in block220 and determine an access policy in block 222. The interface,credentials, and access policy may be transmitted to the registry 208 inblock 224 and received by the registry 208 in block 226.

Similarly, the provider process 212 may begin in block 228 andinstantiate an object to identify an interface in block 230. Theinstantiation may refer to the provider library 210. The providerlibrary 210 may receive the interface and object in block 232 and gatherauthentication credentials in block 234 and determine an access policyin block 236. The interface, credentials, and access policy may betransmitted to the registry in 208 in block 238 and received by theregistry in block 240.

The registry 208 may match the consumer process 204 to the providerprocess 212 in block 242.

The registry 208 may determine a match by first matching the interfacedefined by the consumer process 204 with the interface defined by theprovider process 212.

In some embodiments, the matching process may consider access policiesto determine an appropriate match. The access policies may be used toverify that a provider process may be permitted to provide to a consumerprocess, and also verify that a consumer process may be permitted toreceive information from a provider process.

Some embodiments of a registry 208 may authenticate the consumer process204 and provider process 212 prior to performing any matching. In suchembodiments, the credentials provided by the respective processes may bepassed to an authentication mechanism to verify the respective process'sidentity.

Once the match is performed in block 242, communication information maybe generated in block 244 and transmitted in block 246 to the respectivelibraries. The consumer library 206 may receive the communicationinformation in block 248 and the provider library 210 may receive thecommunication information in block 250. In some embodiments, theregistry 208 may transmit the communication information to either theconsumer library 206 or provider library 210.

The communication information may be information used by the respectivelibraries to establish communications. In some cases, the same set ofcommunication information may be provided to each library, while inother cases, one set of communication information may be provided to theconsumer library 206 and another set of communication information may beprovided to the provider library 210.

The communication information may define various communicationparameters that may be used to communicate between the libraries. Suchparameters may include an address for the other library. In some cases,the address may be an Internet Protocol (IP) address, which may includea port number. In other cases, the address may be a Uniform ResourceIdentifier (URI) or other address.

The communication information may also include other parameters, such asprotocol definitions, proxy addresses, communication speeds, errorchecking mechanisms, or other information that may be used to configurea communications session. Such information may also include securityparameters, such as encryption mechanisms, encryption keys, or otherparameters used to secure communications between the libraries.

Authentication information may be supplied to the libraries and used toauthenticate each library to the other when establishing a communicationsession. In some embodiments, the authentication provided by thelibraries to the registry may be sufficient and no furtherauthentication may be performed. In other embodiments, theauthentication may be performed with the registry 208 and again betweeneach library. In still other embodiments, the authentication may not beperformed with the registry but may be performed between the libraries.

The libraries 206 and 210 may establish communication in blocks 252 and254, and then exchange credentials in blocks 256 and 258. Afterexchanging credentials in block 256, the consumer library 206 may verifythe credentials in block 260, and similarly the provider library 210 mayverify the credentials in block 262.

Once the credentials are verified, the consumer process 204 may bind tothe consumer library 206 in blocks 264 and 266, and the provider process212 may bind to the provider library 210 in blocks 270 and 268. Thecommunication path between the libraries may create a binding betweenblocks 266 and 268, forming a binding chain between the consumer process204 and the provider process 212.

Once the binding is established, operation between the consumer process204 and provider process 212 may happen.

The consumer process 204 may call an object in block 272 and theconsumer library 206 may detect the call in block 274. After detectingthe call, the consumer library 206 may transmit a request in block 276to the provider library 210, which may receive the request in block 278.

Using the binding established between blocks 268 and 207, the providerlibrary 210 may call the object in block 280, and the provider process212 may receive the call in block 282.

The provider process 212 may generate a response to the call in block284, which may be received by the provider library 210 in block 286. Theresponse may be transmitted by the provider library 210 in block 288 andreceived in block 290 by the consumer library 206. The consumer library206 may provide the response to the object in block 292, which may bereceived by the consumer process 204 in block 294.

Embodiment 200 represents a simplified example of a method to advertisean interface, match a consumer process to a provider process, andperform some interaction between the processes after establishing acommunication session.

FIG. 3 is a timeline illustration of an embodiment 300 showing theactions and interactions of a consumer process 304, a library 304associated with the consumer process 304, a registry 308, a providerprocess 310, and a library 308 associated with the provider process 310.Embodiment 300 may illustrate some of the actions performed by thecomponents as described in embodiment 100, and specifically actions thatmay be performed when a failure may be detected in a communication path.The processes, libraries, and registry of embodiment 300 may correspondwith the respective components of embodiment 200.

Other embodiments may use different sequencing, additional or fewersteps, and different nomenclature or terminology to accomplish similarfunctions. In some embodiments, various operations or set of operationsmay be performed in parallel with other operations, either in asynchronous or asynchronous manner. The steps selected here were chosento illustrate some principles of operations in a simplified form.

Embodiment 300 may illustrate an example of a recovery mechanism thatmay be used when a connection to a provider process may be lost. When acommunication failure may be detected, a consumer library may transmit anew request to a registry and may receive a new provider. Once the newprovider is located, a new connection may be established to the newprovider and operations may continue.

Additionally, embodiment 300 may illustrate a retry mechanism that alibrary may use while attempting to connect to the registry. The retrymechanism may modify a request or may retry the same request until acommunication is established with the registry.

In some embodiments, a library may use a similar retry mechanism when acommunication failure may be detected between two libraries.

In block 311, a consumer process 302 may operate and may communicatewith a consumer library 304 using existing communications in block 312.The consumer library 304 may be in communication with a provider library308 using existing communications in block 314 while the providerprocess 310 operates normally in block 316. The state of blocks 311through 316 may represent an established communications session betweenthe consumer process 302 and the provider process 310, such as wasdescribed in embodiment 200.

In block 318, the provider process may crash or become unavailable. Thecrash may be an unintentional or intentional stoppage of services. Thecrash may be detected by the consumer library 304 in block 320.

In some embodiments, the consumer library 304 may attempt to reestablishcommunications repeatedly before determining that the communicationfailure has occurred. In some such embodiments, a library may have twoor more different manners in which the library may establishcommunications with another library. For example, an alternate IPaddress or URI may be attempted, or the communications protocol may bechanged for another attempt. The detection in block 320 may be theresult of multiple attempts that have failed.

After detecting a failed communication in block 320, a new request maybe created and attempted to be transmitted in block 322. If a failurewere to occur in block 324, a retry may be attempted. If the attempt maybe modified in block 325, the request may be changed in block 327 andretried in block 326. If the attempt may not be modified in block 325,the retry may be attempted in block 326.

In some embodiments, alternative addresses, communication protocols, orother modifications may be made to the request of block 322. Afterretrying the request, the registry 306 may receive the request in block328.

The registry 306 may not have a match in block 330 and may loop back toblock 330 until a match is found. When a match is found, communicationinformation may be generated in block 332 and transmitted in block 334to the consumer library.

In some cases, the communication information may be for a new providerwhich may be different from the provider process 310. In some cases, thecommunication information may be for the same provider process 310 whenthe provider process 310 comes back online.

The consumer library 304 may receive new communication information inblock 336, establish new connection in block 338, and continueoperations with a new provider in block 340.

During the period of time from block 311 to block 342, the consumerprocess 302 may be bound to the consumer library 304. When the consumerlibrary 304 establishes a new connection to a provider process, thebinding may be continued to the new provider process. This mechanism mayallow the provider process to be removed and replaced without affectingthe consumer process 302.

The foregoing description of the subject matter has been presented forpurposes of illustration and description. It is not intended to beexhaustive or to limit the subject matter to the precise form disclosed,and other modifications and variations may be possible in light of theabove teachings. The embodiment was chosen and described in order tobest explain the principles of the invention and its practicalapplication to thereby enable others skilled in the art to best utilizethe invention in various embodiments and various modifications as aresuited to the particular use contemplated. It is intended that theappended claims be construed to include other alternative embodimentsexcept insofar as limited by the prior art.

1. A system comprising: a provider service that: connects to a firstlibrary comprising communication processes; identifies a first interfacethat said provider service implements to said first library in a firsttransmission; said first library that: connects to a registry service onbehalf of said provider service and identifies said first interface asbeing available from said provider service; a consumer service that:connects to a second library comprising communication processes;identifies said first interface as being requested by said consumerservice to said second library in a second transmission; defines anobject compliant with said first interface and consumed by a routine insaid consumer service; said second library that: connects to saidregistry service on behalf of said consumer service and identifies saidfirst interface as being consumed by said consumer service; saidregistry service that: receives said first transmission and said secondtransmission; determines that said consumer service and said providerservice reference said first interface and transmits communicationinformation to said first library and said second library; said secondlibrary that further: receives said communication information andestablishes a communication path with said first library; binds saidobject from said consumer service to said provider service.
 2. Thesystem of claim 1, said first library that further: attempts to connectto said registry service to determine that said registry service is notavailable and retries said attempt to connect.
 3. The system of claim 2,said second library that further: attempts to connect to said registryservice to determine that said registry service is not available andretries said attempt to connect.
 4. The system of claim 3, said providerservice connecting to said first library by linking said first libraryas a dynamic linked library.
 5. The system of claim 4, said providerservice being located on a first device and said consumer service beinglocated on a second device.
 6. The system of claim 4, said providerservice being located on a first device and said consumer service beinglocated on said first device.
 7. The system of claim 4, said providerservice being a first process in an application and said consumerservice being a second process in said application, said applicationbeing performed on a first device.
 8. The system of claim 7, saidregistry service being located on a second device.
 9. The system ofclaim 1, said communication information comprising a URI for said firstlibrary.
 10. The system of claim 1, said communication path beingestablished using an authentication mechanism.
 11. An object orientedprogramming environment operable on a computer processor, saidenvironment comprising: a linker that combines objects generated by acompiler to combine them in an executable program; a library of saidobjects linkable by said linker, said library comprising: a consumerobject callable by a consumer process, said consumer object thatestablishes a first connection to a registry service and transmits aninterface reference consumed by said consumer application, saidinterface reference being for an object consumable by said consumerapplication; and a provider object callable by a provider process, saidprovider object that establishes a second connection to said registryservice and transmits said interface reference, said interface referencebeing for objects provided by said provider object; said registryservice that transmits communication information enabling said consumerobject and said provider object to create a third connection and to bindsaid provider process and said consumer process.
 12. The environment ofclaim 11, said communication information being transmitted to saidconsumer object.
 13. The environment of claim 11, said communicationinformation being transmitted to said provider object.
 14. Theenvironment of claim 11, said registry service being operated on asecond computer processor.
 15. The environment of claim 11, saidconsumer object and said provider object being capable of attempting toestablish a connection to said registry, determining that said registryis unavailable, and retrying to establish said connection to saidregistry.
 16. The environment of claim 11, said registry service thatfurther: detects that said second connection is broken and transmits amessage to said consumer object based on said detecting.
 17. Theenvironment of claim 11, said linker being a dynamic linker thatperforms said combining objects at execution time.
 18. A systemcomprising: a provider service that: connects to a first librarycomprising communication processes; identifies a first interface thatsaid provider service implements to said first library in a firsttransmission; said first library that: connects to a registry service onbehalf of said provider service and identifies said first interface asbeing available from said provider service; a consumer service that:connects to a second library comprising communication processes;identifies said first interface as being requested by said consumerservice to said second library in a second transmission; defines anobject compliant with said first interface and consumed by a routine insaid consumer service; said second library that: connects to saidregistry service on behalf of said consumer service and identifies saidfirst interface as being consumed by said consumer service; saidregistry service that: receives said first transmission and said secondtransmission; determines that said consumer service and said providerservice reference said first interface and transmits communicationinformation to said first library and said second library, saidcommunication information comprising authentication information; saidsecond library that further: receives said communication information andestablishes a communication path with said first library afterperforming an authentication verification; binds said object from saidconsumer service to said provider service
 19. The system of claim 18,said registry service being located on a different hardware platformthan said consumer service.
 20. The system of claim 19, said registryservice being located on a different hardware platform than saidprovider service.